home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 60 / IOPROG_60.ISO / soft / c++ / gsl-1.1.1-setup.exe / {app} / src / histogram / get.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-15  |  1.7 KB  |  70 lines

  1. /* histogram/get.c
  2.  * 
  3.  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough
  4.  * 
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or (at
  8.  * your option) any later version.
  9.  * 
  10.  * This program is distributed in the hope that it will be useful, but
  11.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  * General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20. #include <config.h>
  21. #include <gsl/gsl_errno.h>
  22. #include <gsl/gsl_histogram.h>
  23.  
  24. #include "find.c"
  25.  
  26. double
  27. gsl_histogram_get (const gsl_histogram * h, size_t i)
  28. {
  29.   const size_t n = h->n;
  30.  
  31.   if (i >= n)
  32.     {
  33.       GSL_ERROR_VAL ("index lies outside valid range of 0 .. n - 1",
  34.             GSL_EDOM, 0);
  35.     }
  36.  
  37.   return h->bin[i];
  38. }
  39.  
  40. int
  41. gsl_histogram_get_range (const gsl_histogram * h, size_t i,
  42.              double *lower, double *upper)
  43. {
  44.   const size_t n = h->n;
  45.  
  46.   if (i >= n)
  47.     {
  48.       GSL_ERROR ("index lies outside valid range of 0 .. n - 1", GSL_EDOM);
  49.     }
  50.  
  51.   *lower = h->range[i];
  52.   *upper = h->range[i + 1];
  53.  
  54.   return GSL_SUCCESS;
  55. }
  56.  
  57. int
  58. gsl_histogram_find (const gsl_histogram * h,
  59.             const double x, size_t * i)
  60. {
  61.   int status = find (h->n, h->range, x, i);
  62.  
  63.   if (status)
  64.     {
  65.       GSL_ERROR ("x not found in range of h", GSL_EDOM);
  66.     }
  67.  
  68.   return GSL_SUCCESS;
  69. }
  70.